Most computer systems store and process information. This information is a model of objects in the real world, including physical objects, with all of their complexity and details. Sometimes it is possible to define ahead-of-time a clear data structure for a particular application, or use, of this real world data, with the right level of accuracy. However, much of the real world data stored and processed by modern computer systems cannot have a clear data structure imposed on it before it is understood what uses this data will be put to.
For example, a system that captures information about companies and company relations to help decision-making and risk analysis needs the flexibility to constantly re-think, or modify, what information is stored. Adding new fields to a traditional database requires a global change to the whole schema. For example, even if a given field of information is only relevant for a specific company, the field is added to every company in the database. The only way to reliably and permanently remove information from a traditional database is to delete it. Any other mechanism (such as marking the information as deleted) exposes a risk of creating an inconsistent database, because the related information remains in the database, even though its underlying database entry is not valid anymore. Thus it is possible that this non-valid data could be accessed by a user of the database, creating unintended consequences or errors.
Thus there is a need for an apparatus and methods that permit data items which reflect facts about real world objects to be stored, organized and manipulated using a structure that does not impose rigid structure to the data, and that allows a set of stored data to be easily stored, accessed, updated, and manipulated for a variety of purposes.